<?php

class FormulariosController extends AppController {
	var $name = 'Formularios';
	var $components = array ('Pagination');
	var $helpers = array('Html','Form','Accessibility','Pagination');

	function index() {
		$title = 'Formulários';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		$conditions = array();
		// Gerando lista de Unidades da Entidade
		// Permissao: se pode visualizar todas as unidades
		$unitUser = $this->othAuth->getData('unit');
		$group = $this->othAuth->getData('group');
		$level =$group['level'];
		if ($level <100) {

		} else if ($level < 200) {
			$conditions[] = array("organization_id"=>$unitUser[0]['Organization']['id']);
		} else if ($level < 300) {
			$conditions[] = array("organization_id"=>$unitUser[0]['Organization']['id']);
		}
		$formularios = $this->Formulario->find('all', array('conditions'=>$conditions));
		$this->set('formularios', $formularios);
	}

	function view( $id=null ) {
		if (!$id) $this->redirect('/formularios');
		
		$title = 'Visualizar formulário';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		/* Carregando os valores */
		$condition = array('formulario_id'=>$id);
		$campos = $this->Formulario->Fcampo->find('all',array('conditions'=>$condition));
		$this->set('campos',$campos);
		
		$this->Formulario->id = $id;
		$this->set('formulario', $this->Formulario->read());
	}

	function add() {
		$title = 'Cadastrar formulário';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		$this->set('organizations', $this->Formulario->Organization->find('list'));
		
		if (!empty($this->data)) {
			if ($this->Formulario->save($this->data)) {
				$totalCampos = $this->data['Formulario']['fieldIterator'];
				
				$formulario_id = $this->Formulario->getLastInsertId();
				
				// Cadastrar todos os campos
				for ($i = 0; $i<$totalCampos; $i++) {
					if (isset($this->data["Fcampo_".$i])) {
						$Fcampo = array('Fcampo'=>$this->data["Fcampo_".$i]);
						$Fcampo['Fcampo']['formulario_id'] = $formulario_id;

						$this->Formulario->Fcampo->create();
						if (!$this->Formulario->Fcampo->save($Fcampo)) {
							$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar campo do formulario.';							
						}
					}
				}
				
				$_SESSION['mensagem']['success'][] = 'Formulario cadastrado com sucesso!';
				$this->redirect('/formularios/view/'.$formulario_id);	
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar o formulario.';				
			}
			$this->redirect('/formularios');
		}
	}

	function edit( $id=null) {
		if (!$id) $this->redirect('/formularios');
		
		$title = 'Editar formulário';
		$this->set('title', $title);
		$this->set('pageTitle', $title);		
		
		$this->set('organizations', $this->Formulario->Organization->find('list'));
		
		/* Carregando os valores */
		$condition = array('formulario_id'=>$id);
		$campos = $this->Formulario->Fcampo->find('all',array('conditions'=>$condition));
		$this->set('campos',$campos);
		
		$this->Formulario->id = $id;
		if (empty($this->data)) {
			$this->data = $this->Formulario->read();
		} else {
			if ($this->Formulario->save($this->data['Formulario'])) {
				
				$totalCampos = $this->data['Formulario']['fieldIterator'];
				
				// Cadastrar todos os campos
				for ($i = 0; $i<$totalCampos; $i++) {
					//TODO: Verificar se pode alterar o tipo
					if (isset($this->data["Fcampo_".$i])) {
						$Fcampo = array('Fcampo'=>$this->data["Fcampo_".$i]);
						
						// TODO: Verificar se pode apagar
						// TODO: Fazer a funcionalidade ocultar
						// TODO: Apagar o valores tb
						if ((isset($Fcampo['Fcampo']['id'])) && (!isset($Fcampo['Fcampo']['name']))) {
							$this->Formulario->Fcampo->del($Fcampo['Fcampo']['id']);
						} else {
							$Fcampo['Fcampo']['formulario_id'] = $id;

							$this->Formulario->Fcampo->create();
							if (!$this->Formulario->Fcampo->save($Fcampo)) {
								$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar campo do formulario.';							
							}
						}
					}
				}
					
				$_SESSION['mensagem']['success'][] = 'Formulario alterado com sucesso!';
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar alterar o formulario.';
			}
			$this->redirect('/formularios/view/'.$id);
		}
		$formulario = $this->Formulario->find(array('`Formulario`.id' => $id));
		$this->set('formulario', $formulario);
	}

	function delete($id) {
		if (!$id) $this->redirect('/formularios');
		if ($this->Formulario->del($id)) {
			
			// TODO: Apagar os valores tb
			$condition = array('formulario_id'=>$id);
			$campos = $this->Formulario->Fcampo->find('all',array('conditions'=>$condition));
			foreach ($campos as $campo) {
				$this->Formulario->Fcampo->del($campo['Fcampo']['id']);
			}
		
			$_SESSION['mensagem']['success'][] = 'Formulario excluido com sucesso!';
		} else {
			$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir o formulario.';
		}
		$this->redirect('/formularios');
	}
}
?>
